farmterritoryfandomcom_ru-20200215-history
Модуль:Factory
local p = {} local arrData = mw.loadData( 'Module:DataFactory' ) local crops = mw.loadData( 'Module:DataCrops' ) local animal = mw.loadData( 'Module:DataAnimal' ) local tree = mw.loadData( 'Module:DataTree' ) local materials = mw.loadData( 'Module:DataMaterials' ) --Карточка фабрики-- function p.getView( frame ) local id = frame.args1 local text='' text=text.. ' Фабрики / '..id..' '.. ' '.. ' '..id..' '.. ' center '.. ' '.. ' '.. ' Категория '.. ' Фабрики '.. ' '.. ' '.. ' Локация '.. ' ' if arrDataid.location~="" then text=text..'[['..arrDataid.location..']]' else text=text..'Любая' end text=text.. ' '.. ' '.. ' '.. ' Продукция '.. ' '.. ' Время производства '.. ' '..arrDataid.tm..' мин '.. ' '.. ' '.. ' Количество '.. ' '..arrDataid.c..' '.. ' '.. ' '.. ' '.. ' '.. ' Описание '.. ' Фабрика производит продукцию, которую можно продать за монеты или загрузить в качестве сырья на другую фабрику. '.. ' Фабрику можно купить:'.. ' '.. ' с '..arrDataid.level..' уровня за '..arrDataid.buy..' 15px ' if arrDataid.buyagro~=0 then text=text..' с '..arrDataid.levelagro..' уровня за '..arrDataid.buyagro..' 15px ' end text=text..' '.. ' '.. ' Время производства 1 единицы продукции составлет '..arrDataid.tm..' мин. '.. ' Одновременно на фабрику можно загрузить сырье для производства '..arrDataid.c..' единиц продукции. ' if arrDataid.exper~=0 then text=text..' При покупке фабрики начисляется опыт: '..arrDataid.exper..' . ' end if arrDataid.del~=0 then text=text..' При удалении фабрики начисляется компенсация в размере '..arrDataid.del..' 15px. ' end text=text..' Место покупки фабрики ' if (pcall(function () if arrDataid.shop nil then error() end end)) then text=text..' '..arrDataid.shop..' ' else text=text..' Фабрику можно купить в Магазине. ' end text=text..' Локация ' if arrDataid.location~="" then text=text..' Фабрику можно построить только в локации '..arrDataid.location..'. ' else text=text..' Фабрику можно построить в любой локации, в которой есть Промзона. ' end return text..Factorybuild(id)..Factoryres(id)..port(id) end function p.Factory( frame ) local id = frame.args1 local text=' [[Файл:'..arrDataid.name..'.png|240px]] '.. ' '..arrDataid.name..' '.. ' Фабрику можно купить: '.. ' с '..arrDataid.level..' уровня за '..arrDataid.buy..' 15px ' if arrDataid.buyagro~=0 then text=text..' с '..arrDataid.levelagro..' уровня за '..arrDataid.buyagro..' 15px ' end text=text..' '.. ' '.. ' Время производства 1 единицы продукции: '..arrDataid.tm..' мин. '.. ' Одновременно на фабрику можно загрузить сырье для производства '..arrDataid.c..' единиц продукции. ' if arrDataid.exper~=0 then text=text..' Опыт за покупку фабрики: '..arrDataid.exper..' . ' end if arrDataid.del~=0 then text=text..' Компенсация при удалении: '..arrDataid.del..' 15px. ' end text=text..' ' text=text..' Локация: ' if arrDataid.location~="" then text=text..' Можно построить только в локации '..arrDataid.location..'. ' else text=text..' Можно построить в любой локации. ' end return text..Factorybuild(id)..Factoryres(id)..port(id) end --Улучшение в Порту-- function port(id) local text=' Улучшение в Торговом порту ' local ok, msg = pcall(function () if arrDataid.port nil then error() end end) if ok then text=text..' Фабрику можно улучшить в Торговом порту. ' else text=text..' Фабрику нельзя улучшить в Торговом порту. ' return text end text=text..' Что можно улучшить? ' if arrDataid.port1.tm~=0 then text=text..'Для данной фабрики можно уменьшить время производства 1 ед. продукции.' else text=text..'Для данной фабрики можно увеличить количество загружаемого сырья с 3 до 6.' end text=text..' Всего можно улучшить 8 таких фабрик на одной локации. '.. ' '.. ' '.. ' Уровень '.. ' Цена 15px '.. ' Цена 15px ' if arrDataid.port1.tm~=0 then text=text..' Время производства продукции в минутах ' else text=text..' Количество сырья, загружаемого за 1 раз ' end text=text.. ' ' local c,tm=arrDataid.c, arrDataid.tm local co for i,v in ipairs(arrDataid.port) do c=c+v.vol if v.tm~=0 then style1=' color:#088A08; font-size: 20px' tm=v.tm end text= text..' '.. ' '..v.level..' '.. ' '..v.buy..' '.. ' '..v.buy1..' ' if v.tm~=0 then text= text..' '..tm..' ' tm=v.tm else text= text..' '..c..' ' end text= text..' ' i=i+1 co=i-1 end text=text..' ' --Галерея из 3-5 фоток для порта-- text=text..require("Module:Gallery").Gallery(id,co) return text end --Стройматериалы-- function Factorybuild(id) local text=' Строительство ' local ok, msg = pcall(function () if arrDataid.materials nil then error() end end) if ok then text=text..' После покупки фабрику необходимо еще построить, для этого нужно будет купить материалы. ' else text=text..'Фабрика строится мгновенно, сразу же при покупке. Материалы для постройки фабрики не нужны.' return text end text=text..' '.. ' '.. ' '.. ' Материалы '.. ' Количество '.. ' Цена 15px '.. ' Стоимость 15px '.. ' ' local total=0 for i,v in ipairs(arrDataid.materials) do --Проверка на наличие материалов в модуле-- local ok, msg = pcall(function () if materialsv.name.buy nil then error() end end) if ok then text= text..' '.. ' 50px '.. ' '..v.name..' '.. ' '..v.c..' '.. ' '..materialsv.name.buy..' '.. ' '..materialsv.name.buy*v.c..' '.. ' ' total=total+materialsv.name.buy*v.c else text= text..' '.. ' '..v.name..' '.. ' '.. ' '.. ' ' end i=i+1 end text= text..' '.. ' Итого: '.. ' '.. ' '.. ' '.. ' '..total..' '.. ' ' text=text..' ' return text end --Производимая продукция и ресурсы-- function Factoryres(id) --Составляем массив для столбца с ресурсами-- data = {} --Преобразуем деревья-- for key,v in pairs(tree) do if v.nameprod '' then datakey={buy=v.sell,fab=key,name=v.name} else datav.nameprod={buy=v.sell,fab=key,name=v.nameprod} end end --Преобразуем животных-- for key,v in pairs(animal) do datav.nameprod={buy=v.sell,fab=v.nameprod,name=v.nameprod} end --Преобразуем продукцию фабрик-- for key,v in pairs(arrData) do for i,v1 in ipairs(v.resources) do datav1.nameprod={buy=v1.sell,name=v1.nameprod,fab=key} end end --Добавлем семена-- for key,v in pairs(crops) do datakey={name=v.name,fab=key} local ok, msg = pcall(function () if cropspkey.agronom nil then error() end end) datakey.buy= ok and v.buy or v.sell end local text='' local total=0 text=text..' Производство '.. ' Для того чтобы произвести продукцию, на фабрику загружается сырье, а затем собирается готовая продукция. '.. ' В следующей таблице находится список сырья и производимых товаров. ' --Добавляется основной ресурс-- local text2, buybase=baseres(id) text=text..text2 --Добавляются столбцы с ресурсами- local text1='' for i,v in ipairs(arrDataid.resources) do local nameres1=v.nameres1 text1=text1..'' --Проверка на наличие ресурса в БД-- local ok, msg = pcall(function () if datanameres1.name nil then error() end end) if ok then text1=text1..'[[Файл:'..datanameres1.name..'.png|50px]]'.. '[['..datanameres1.fab..'|'..datanameres1.name..']]'.. ..datanameres1.buy.. else text1=text1..'50px'.. ..nameres1.... ' - ' end --Добавляются столбцы с продукцией- text1=text1.. '50px'.. ..v.nameprod.... ..v.sell.... '' if ok then text1=text1..(math.floor((v.sell-datanameres1.buy-buybase)*100)/100) else text1=text1..'-' end text1=text1..'' i=i+1 total=i-1 end text=text.. ' '.. ' Всего: '..total..' '.. ' '.. ' '.. ' Сырье '.. ' Цена 15px '.. ' '.. ' Продукция '.. ' Цена 15px '.. ' Доход 15px '.. ' '..text1..' ' return text end --Добавляется основной ресурс-- function baseres(id) local text='' local buybase=0 --Наличие базового ресурса-- local ok, msg = pcall(function () if arrDataid.resourcebase nil then error() end end) if ok then text=text..' Для производства продукции на эту фабрику необходимо загружать два вида сырья: основное и сменяемое сырье. Основное сырье - сырье, которое требуется для производства каждой единицы продукции. Сменяемое сырье – сырье, которое меняется для производства каждого вида товара. ' else return text, 0 end text=text..' '.. ' '.. ' '.. ' Основное сырье '.. ' Цена 15px '.. ' ' for i,v in ipairs(arrDataid.resourcebase) do local ok, msg = pcall(function () if datav.name.name nil then error() end end) text=text..' ' if ok then text=text.. ' 50px '.. ' [['..datav.name.fab..'|'..v.name..']] '.. ' '..datav.name.buy..' ' buybase=buybase+datav.name.buy else text=text.. ' 50px '.. ' '..v.name..' '.. ' - ' end text=text..' ' end text=text..' Итого: '..buybase..' ' return text, buybase end --Список фабрик на которых можно переработать продукт frame-- function p.fab(frame) local id='' if type(frame) 'string' then id=frame elseif type(frame) 'table' then id= frame.args1 end local text='' local text1='' local rb=false local arrData = mw.loadData( 'Module:DataFactory' ) for key,v in pairs(arrData) do text=' ' local ok, msg = pcall(function () if v.resourcebase nil then error() end end) if ok then for key1,v1 in pairs(v.resourcebase) do if v1.name id then text1=text1..' '..key..' ' rb=true break end end end if not rb then for key2,v2 in pairs(v.resources) do if v2.nameres1 id then text1=text1..' '..key..' ' break end end end text=text..text1..' ' end if text1~='' then text=' Продукт можно переработать на фабриках: '..text..' ' else text=' Продукт можно переработать на фабриках: Пока нет информации ' end return text end --Список продукции фабрик-- function p.product() local text=' ' local product={} local j=1 for key,v in pairs(arrData) do for i,v1 in ipairs(v.resources) do productj={} productj.fab=key productj.name=v1.nameprod j=j+1 end end table.sort(product,function( a, b ) return a.name < b.name end ) for i,v in ipairs(product) do if i 1 then text=text....string.sub (v.name, 1,2)..' ' else if string.sub (producti.name, 1,2)>string.sub (producti-1.name, 1,2) then text=text..' '....string.sub (v.name, 1,2)..' ' end end text=text..' '..v.name..' ' end text=text..' ' return text end --Общий список фабрик-- function p.list() local data1 = mw.loadData( 'Module:DatalistFactory' ) local data={} for i,v in pairs(data1) do datai=v end table.sort(data, function(a, b) return a < b end) local text=' ' for i,v in ipairs(data) do text=text..' '..v..' ' end text=text..' ' return text end return p